home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / DELPHI32 / GRAPHICS / SCGRAPH / GRIDS.PAS < prev    next >
Pascal/Delphi Source File  |  1996-11-07  |  13KB  |  439 lines

  1. unit Grids;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   Menus, ExtCtrls, ScGraph;
  8.  
  9. type
  10.   TGridForm = class(TForm)
  11.     MainMenu1: TMainMenu;
  12.     File1: TMenuItem;
  13.     Close1: TMenuItem;
  14.     Printersetup1: TMenuItem;
  15.     Print1: TMenuItem;
  16.     N1: TMenuItem;
  17.     Exit1: TMenuItem;
  18.     Edit1: TMenuItem;
  19.     Copygraph1: TMenuItem;
  20.     HorizGrid: TMenuItem;
  21.     VertGrid1: TMenuItem;
  22.     ScGraph1: TScGraph;
  23.     MajorGrid1: TMenuItem;
  24.     MinorGrid1: TMenuItem;
  25.     N21: TMenuItem;
  26.     N31: TMenuItem;
  27.     N41: TMenuItem;
  28.     N51: TMenuItem;
  29.     N61: TMenuItem;
  30.     N71: TMenuItem;
  31.     N81: TMenuItem;
  32.     N91: TMenuItem;
  33.     N151: TMenuItem;
  34.     N201: TMenuItem;
  35.     N251: TMenuItem;
  36.     N301: TMenuItem;
  37.     N351: TMenuItem;
  38.     N401: TMenuItem;
  39.     N451: TMenuItem;
  40.     N501: TMenuItem;
  41.     N551: TMenuItem;
  42.     N601: TMenuItem;
  43.     N651: TMenuItem;
  44.     N701: TMenuItem;
  45.     N751: TMenuItem;
  46.     N801: TMenuItem;
  47.     N851: TMenuItem;
  48.     N901: TMenuItem;
  49.     N951: TMenuItem;
  50.     Step1: TMenuItem;
  51.     minorTickNumber1: TMenuItem;
  52.     Autometrics1: TMenuItem;
  53.     Help1: TMenuItem;
  54.     procedure Close1Click(Sender: TObject);
  55.     procedure Printersetup1Click(Sender: TObject);
  56.     procedure Exit1Click(Sender: TObject);
  57.     procedure Copygraph1Click(Sender: TObject);
  58.     procedure Print1Click(Sender: TObject);
  59.     procedure N21Click(Sender: TObject);
  60.     procedure N31Click(Sender: TObject);
  61.     procedure N41Click(Sender: TObject);
  62.     procedure N51Click(Sender: TObject);
  63.     procedure N61Click(Sender: TObject);
  64.     procedure N71Click(Sender: TObject);
  65.     procedure N81Click(Sender: TObject);
  66.     procedure N91Click(Sender: TObject);
  67.     procedure N151Click(Sender: TObject);
  68.     procedure N201Click(Sender: TObject);
  69.     procedure N251Click(Sender: TObject);
  70.     procedure N351Click(Sender: TObject);
  71.     procedure N451Click(Sender: TObject);
  72.     procedure N551Click(Sender: TObject);
  73.     procedure N651Click(Sender: TObject);
  74.     procedure N751Click(Sender: TObject);
  75.     procedure N851Click(Sender: TObject);
  76.     procedure N951Click(Sender: TObject);
  77.     procedure N301Click(Sender: TObject);
  78.     procedure N401Click(Sender: TObject);
  79.     procedure N501Click(Sender: TObject);
  80.     procedure N601Click(Sender: TObject);
  81.     procedure N701Click(Sender: TObject);
  82.     procedure N801Click(Sender: TObject);
  83.     procedure N901Click(Sender: TObject);
  84.     procedure Step1Click(Sender: TObject);
  85.     procedure minorTickNumber1Click(Sender: TObject);
  86.     procedure FormCreate(Sender: TObject);
  87.     procedure Autometrics1Click(Sender: TObject);
  88.     procedure Help1Click(Sender: TObject);
  89.     procedure FormDestroy(Sender: TObject);
  90.   private
  91.     { Private declarations }
  92.   public
  93.     { Public declarations }
  94.   end;
  95.  
  96. var
  97.   GridForm: TGridForm;
  98.   GridsText: TStringList;
  99.  
  100. implementation
  101.  
  102. uses DemoMain, Help;
  103.  
  104. {$R *.DFM}
  105.  
  106. procedure TGridForm.Close1Click(Sender: TObject);
  107. begin
  108.   DemoForm.CloseWindow1Click(Self);
  109. end;
  110.  
  111. procedure TGridForm.Printersetup1Click(Sender: TObject);
  112. begin
  113.   DemoForm.PrinterSetupDialog1.Execute;
  114. end;
  115.  
  116. procedure TGridForm.Exit1Click(Sender: TObject);
  117. begin
  118.   DemoForm.Exit1Click(Self);
  119. end;
  120.  
  121. procedure TGridForm.Copygraph1Click(Sender: TObject);
  122. begin
  123.   ScGraph1.CopyGraphToClipboard;
  124. end;
  125.  
  126. procedure TGridForm.Print1Click(Sender: TObject);
  127. begin
  128.   ScGraph1.PrintGraph(-1, -1, 140, 120);
  129. end;
  130.  
  131. procedure TGridForm.N21Click(Sender: TObject);
  132. begin
  133.   N21.Checked := N21.Checked xor true;
  134.   if N21.Checked then
  135.     ScGraph1.XScale.MajorLogPattern:= ScGraph1.XScale.MajorLogPattern + [lt20]
  136.   else
  137.     ScGraph1.XScale.MajorLogPattern:= ScGraph1.XScale.MajorLogPattern - [lt20];
  138. end;
  139.  
  140. procedure TGridForm.N31Click(Sender: TObject);
  141. begin
  142.   N31.Checked := N31.Checked xor true;
  143.   if N31.Checked then
  144.     ScGraph1.XScale.MajorLogPattern:= ScGraph1.XScale.MajorLogPattern + [lt30]
  145.   else
  146.     ScGraph1.XScale.MajorLogPattern:= ScGraph1.XScale.MajorLogPattern - [lt30];
  147. end;
  148.  
  149. procedure TGridForm.N41Click(Sender: TObject);
  150. begin
  151.   N41.Checked := N41.Checked xor true;
  152.   if N41.Checked then
  153.     ScGraph1.XScale.MajorLogPattern:= ScGraph1.XScale.MajorLogPattern + [lt40]
  154.   else
  155.     ScGraph1.XScale.MajorLogPattern:= ScGraph1.XScale.MajorLogPattern - [lt40];
  156.  
  157. end;
  158.  
  159. procedure TGridForm.N51Click(Sender: TObject);
  160. begin
  161.   N51.Checked := N51.Checked xor true;
  162.   if N51.Checked then
  163.     ScGraph1.XScale.MajorLogPattern:= ScGraph1.XScale.MajorLogPattern + [lt50]
  164.   else
  165.     ScGraph1.XScale.MajorLogPattern:= ScGraph1.XScale.MajorLogPattern - [lt50];
  166. end;
  167.  
  168. procedure TGridForm.N61Click(Sender: TObject);
  169. begin
  170.   N61.Checked := N61.Checked xor true;
  171.   if N61.Checked then
  172.     ScGraph1.XScale.MajorLogPattern:= ScGraph1.XScale.MajorLogPattern + [lt60]
  173.   else
  174.     ScGraph1.XScale.MajorLogPattern:= ScGraph1.XScale.MajorLogPattern - [lt60];
  175. end;
  176.  
  177. procedure TGridForm.N71Click(Sender: TObject);
  178. begin
  179.   N71.Checked := N71.Checked xor true;
  180.   if N71.Checked then
  181.     ScGraph1.XScale.MajorLogPattern:= ScGraph1.XScale.MajorLogPattern + [lt70]
  182.   else
  183.     ScGraph1.XScale.MajorLogPattern:= ScGraph1.XScale.MajorLogPattern - [lt70];
  184. end;
  185.  
  186. procedure TGridForm.N81Click(Sender: TObject);
  187. begin
  188.   N81.Checked := N81.Checked xor true;
  189.   if N81.Checked then
  190.     ScGraph1.XScale.MajorLogPattern:= ScGraph1.XScale.MajorLogPattern + [lt80]
  191.   else
  192.     ScGraph1.XScale.MajorLogPattern:= ScGraph1.XScale.MajorLogPattern - [lt80];
  193. end;
  194.  
  195. procedure TGridForm.N91Click(Sender: TObject);
  196. begin
  197.   N91.Checked := N91.Checked xor true;
  198.   if N91.Checked then
  199.     ScGraph1.XScale.MajorLogPattern:= ScGraph1.XScale.MajorLogPattern + [lt90]
  200.   else
  201.     ScGraph1.XScale.MajorLogPattern:= ScGraph1.XScale.MajorLogPattern - [lt90];
  202. end;
  203.  
  204. procedure TGridForm.N151Click(Sender: TObject);
  205. begin
  206.   N151.Checked := N151.Checked xor true;
  207.   if N151.Checked then
  208.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern + [st15]
  209.   else
  210.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern - [st15];
  211. end;
  212.  
  213. procedure TGridForm.N201Click(Sender: TObject);
  214. begin
  215.   N201.Checked := N201.Checked xor true;
  216.   if N201.Checked then
  217.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern + [st20]
  218.   else
  219.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern - [st20];
  220. end;
  221.  
  222. procedure TGridForm.N251Click(Sender: TObject);
  223. begin
  224.   N251.Checked := N251.Checked xor true;
  225.   if N251.Checked then
  226.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern + [st25]
  227.   else
  228.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern - [st25];
  229. end;
  230.  
  231. procedure TGridForm.N351Click(Sender: TObject);
  232. begin
  233.   N351.Checked := N351.Checked xor true;
  234.   if N351.Checked then
  235.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern + [st35]
  236.   else
  237.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern - [st35];
  238. end;
  239.  
  240. procedure TGridForm.N451Click(Sender: TObject);
  241. begin
  242.   N451.Checked := N451.Checked xor true;
  243.   if N451.Checked then
  244.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern + [st45]
  245.   else
  246.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern - [st45];
  247. end;
  248.  
  249. procedure TGridForm.N551Click(Sender: TObject);
  250. begin
  251.   N551.Checked := N551.Checked xor true;
  252.   if N551.Checked then
  253.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern + [st55]
  254.   else
  255.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern - [st55];
  256. end;
  257.  
  258. procedure TGridForm.N651Click(Sender: TObject);
  259. begin
  260.   N651.Checked := N651.Checked xor true;
  261.   if N651.Checked then
  262.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern + [st65]
  263.   else
  264.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern - [st65];
  265. end;
  266.  
  267. procedure TGridForm.N751Click(Sender: TObject);
  268. begin
  269.   N751.Checked := N751.Checked xor true;
  270.   if N751.Checked then
  271.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern + [st75]
  272.   else
  273.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern - [st75];
  274. end;
  275.  
  276. procedure TGridForm.N851Click(Sender: TObject);
  277. begin
  278.   N851.Checked := N851.Checked xor true;
  279.   if N851.Checked then
  280.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern + [st85]
  281.   else
  282.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern - [st85];
  283. end;
  284.  
  285. procedure TGridForm.N951Click(Sender: TObject);
  286. begin
  287.   N951.Checked := N951.Checked xor true;
  288.   if N951.Checked then
  289.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern + [st95]
  290.   else
  291.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern - [st95];
  292. end;
  293.  
  294. procedure TGridForm.N301Click(Sender: TObject);
  295. begin
  296.   N301.Checked := N301.Checked xor true;
  297.   if N301.Checked then
  298.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern + [st30]
  299.   else
  300.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern - [st30];
  301. end;
  302.  
  303. procedure TGridForm.N401Click(Sender: TObject);
  304. begin
  305.   N401.Checked := N401.Checked xor true;
  306.   if N401.Checked then
  307.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern + [st40]
  308.   else
  309.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern - [st40];
  310. end;
  311.  
  312. procedure TGridForm.N501Click(Sender: TObject);
  313. begin
  314.   N501.Checked := N501.Checked xor true;
  315.   if N501.Checked then
  316.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern + [st50]
  317.   else
  318.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern - [st50];
  319. end;
  320.  
  321. procedure TGridForm.N601Click(Sender: TObject);
  322. begin
  323.   N601.Checked := N601.Checked xor true;
  324.   if N601.Checked then
  325.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern + [st60]
  326.   else
  327.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern - [st60];
  328. end;
  329.  
  330. procedure TGridForm.N701Click(Sender: TObject);
  331. begin
  332.   N701.Checked := N701.Checked xor true;
  333.   if N701.Checked then
  334.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern + [st70]
  335.   else
  336.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern - [st70];
  337. end;
  338.  
  339. procedure TGridForm.N801Click(Sender: TObject);
  340. begin
  341.   N801.Checked := N801.Checked xor true;
  342.   if N801.Checked then
  343.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern + [st80]
  344.   else
  345.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern - [st80];
  346. end;
  347.  
  348. procedure TGridForm.N901Click(Sender: TObject);
  349. begin
  350.   N901.Checked := N901.Checked xor true;
  351.   if N901.Checked then
  352.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern + [st90]
  353.   else
  354.     ScGraph1.XScale.MinorLogPattern:= ScGraph1.XScale.MinorLogPattern - [st90];
  355. end;
  356.  
  357. procedure TGridForm.Step1Click(Sender: TObject);
  358. var InpStr: string;
  359. begin
  360.   InpStr:= InputBox('Step interval',
  361.      'Enter interval (0.5-10):', FloatToStr(ScGraph1.YScale.LinStep));
  362.   try
  363.     ScGraph1.YScale.LinStep:= StrToFloat(InpStr);
  364.   except
  365.   end;
  366. end;
  367.  
  368. procedure TGridForm.minorTickNumber1Click(Sender: TObject);
  369. var InpStr: string;
  370. begin
  371.   InpStr:= InputBox('Number of Minor Ticks',
  372.      'Enter number (0-10):', IntToStr(ScGraph1.YScale.MinorTickNumber));
  373.   try
  374.     ScGraph1.YScale.MinorTickNumber:= StrToInt(InpStr);
  375.   except
  376.   end;
  377. end;
  378.  
  379. procedure TGridForm.FormCreate(Sender: TObject);
  380.   function F(v: double): double;
  381.   begin
  382.     Result:= 0.7 + 8*exp(-sqr((v - 40)/5)) + 3.5*exp(-sqr((v - 10)/3));
  383.   end;
  384.  
  385. var i: integer;
  386. begin
  387.   with ScGraph1 do
  388.   begin
  389.     Plotting := false;
  390.  
  391.     SetSeries(1, true, true, clNavy, '---');
  392.     for i := 1 to 600 do AddPoint(1, i/6, F(i/6));
  393.     SetSeriesLine(1, true, pmLine, 0, psSolid);
  394.     SetSeries(2, true, true, clNavy, '---');
  395.     for i := 1 to 100 do AddPoint(2, i, F(i));
  396.     SetSeriesPoints(2, true, psCircle, 10);
  397.  
  398.     Plotting := true;
  399.   end;
  400.  
  401.   GridsText := TStringList.Create;
  402.   with GridsText do begin
  403.    Add(' Edit  : Copy Graph - copies graph to clipboard');
  404.    Add('         Autometrics- autoadjust various sizes,');
  405.    Add('         line widths and distances');
  406.    Add(' HorizGrid: example for a linear scale type');
  407.    Add('    - step interval: value on scale for the ');
  408.    Add('         interval between major ticks/grid lines');
  409.    Add('    - minor grid number: number of minor ticks/');
  410.    Add('         grid lines between major ticks');
  411.    Add(' VertGrid : example for a logarithmic scale type');
  412.    Add('    - major grid: select major ticks/grid lines,');
  413.    Add('         numbers are given for decade 1 to 10');
  414.    Add('    - minor grid: select major ticks/grid lines,');
  415.    Add('         numbers are given for decade 1 to 10');
  416.    Add(' ');
  417.    Add('  (see also ScGraph.txt for further properties)');
  418.   end;
  419. end;
  420.  
  421. procedure TGridForm.FormDestroy(Sender: TObject);
  422. begin
  423.   GridsText.Free
  424. end;
  425.  
  426. procedure TGridForm.Autometrics1Click(Sender: TObject);
  427. begin
  428.   ScGraph1.Autometrics := ScGraph1.Autometrics xor true;
  429.   Autometrics1.Checked := ScGraph1.Autometrics;
  430. end;
  431.  
  432. procedure TGridForm.Help1Click(Sender: TObject);
  433. begin
  434.   HelpForm.HelpMemo.Lines.Assign(GridsText);
  435.   HelpForm.ShowModal;
  436. end;
  437.  
  438. end.
  439.